/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.eurotrader.logar;

import br.com.eurotrader.beanssessao.SessionBean1;
import br.com.eurotrader.controller.CadGerUsuarioController;
import br.com.eurotrader.entidades.Usuario;
import br.com.eurotrader.push.CentralPush;
import br.com.eurotrader.utils.FacesUtils;
import java.io.IOException;
import java.io.Serializable;
import java.security.NoSuchAlgorithmException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.inject.Named;

/**
 *
 * @author PROG01
 */
@Named
@RequestScoped
public class Login implements Serializable {

    private String j_username;
    private String j_password;

    public String getJ_password() {
        return j_password;
    }

    public void setJ_password(String j_password) {
        this.j_password = j_password;
    }

    public String getJ_username() {
        return j_username;
    }

    public void setJ_username(String j_username) {
        this.j_username = j_username;
    }
//    @EJB
//    private ClassePrevayler classePrevayler;
    @EJB
    private CentralPush centralPush;
//    @EJB
//    private CadGerUsuarioController cadGerUsuarioController;
    
       
    


    public void login(ActionEvent event) throws java.io.IOException, NoSuchAlgorithmException {
        if ((!j_username.equalsIgnoreCase(""))) {
            System.out.println(j_username);
//            if ((j_username.equalsIgnoreCase("admin")) && (j_password.equalsIgnoreCase("admin"))){
//                todasAcoes.receberAcoes(null);
//                return;
//            }
            SessionBean1 session = (SessionBean1) FacesUtils.getManagedBean("sessionBean1");
            CadGerUsuarioController cadGerUsuarioController = (CadGerUsuarioController) FacesUtils.getManagedBean("cadGerUsuarioController");
            Usuario usuario;
            boolean primeiroAcesso = false;
            if (j_password.trim().equals("")){
                usuario = cadGerUsuarioController.buscaUsuario(j_username, "123456");
                primeiroAcesso = true;
            }else{
                usuario = cadGerUsuarioController.buscaUsuario(j_username, j_password);
            }
            if (usuario != null) {
                if (!usuario.getAtivo()) {
                    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Usuário bloqueado.", " O acesso deste usuário esta bloqueado."));
                    return;
                }
              //  centralPush.iniciarPush(event);
                
//                HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
//                String ip = request.getRemoteAddr();
//
                session.setUsuarioConectado(usuario);
                if (primeiroAcesso){
                    j_password = "123456";
                }
                centralPush.iniciarPush(event);
                FacesContext.getCurrentInstance().getExternalContext().redirect("j_spring_security_check?j_username=" + j_username + "&j_password=" + j_password);
            } else {
                FacesContext.getCurrentInstance().addMessage(
                        null,
                        new FacesMessage(FacesMessage.SEVERITY_ERROR, "Verifique se o usuário e a senha estão corretos.", " Caso esteja tudo correto, informe ao administrador do sistema."));
            }
        } else {
            FacesContext.getCurrentInstance().addMessage(
                    null,
                    new FacesMessage(FacesMessage.SEVERITY_ERROR, "Deve-se digitar o seu login.", " Caso tenha digitado e não consiga entrar, informe ao administrador do sistema."));
        }
    }  

    public void logout(ActionEvent event)  {
        try {
            FacesContext.getCurrentInstance().getExternalContext().redirect("j_spring_security_logout");
        } catch (IOException ex) {
            Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
            FacesContext.getCurrentInstance().addMessage(
                    null,
                    new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERRO NO LOGOUT.", " Ocorreu um erro no logout."));
        }
    }
    
    


}
